package com.roncoo.education.course.feign.interfaces.score;

import java.io.Serializable;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>
 * ADMIN-实验步骤分数
 * </p>
 *
 * @author wujing
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "AdminExperimentScoreStepReq", description = "ADMIN-实验步骤分数添加")
public class CallbackExperimentScoreStepReq implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    private Long id;

    @ApiModelProperty(value = "外键")
    private Long experimentScoreId;

    @ApiModelProperty(value = "实验步骤序号")
    private Integer seq;

    @ApiModelProperty(value = "步骤名称：100字以内")
    @NotBlank(message = "实验步骤数据错误：SEQ为[seq]的步骤中title缺失")
    @Length(message = "实验步骤数据错误：SEQ为[seq]的步骤中title长度不符合<=100的要求", max = 100)
    private String title;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "实验步骤开始时间：13位时间戳")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中startTime缺失")
    private Long startTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "实验步骤结束时间：13位时间戳")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中endTime缺失")
    private Long endTime;

    @ApiModelProperty(value = "实验步骤用时：非零整数，单位秒")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中timeUsed缺失")
    private Integer timeUsed;

    @ApiModelProperty(value = "实验步骤合理用时：单位秒")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中expectTime缺失")
    private Integer expectTime;

    @ApiModelProperty(value = "实验步骤满分：0 ~100，百分制")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中maxScore缺失")
    @Range(message = "实验步骤数据错误：SEQ为[seq]的步骤中maxScore不符合[0,100]的要求", min = 0, max = 100)
    private Integer maxScore;

    @ApiModelProperty(value = "实验步骤得分：0 ~100，百分制")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中score缺失")
    @Range(message = "实验步骤数据错误：SEQ为[seq]的步骤中score不符合[0,100]的要求", min = 0, max = 100)
    private Integer score;

    @ApiModelProperty(value = "实验步骤操作次数")
    @NotNull(message = "实验步骤数据错误：SEQ为[seq]的步骤中repeatCount缺失")
    private Integer repeatCount;

    @ApiModelProperty(value = "步骤评价：200字以内")
    @NotBlank(message = "实验步骤数据错误：SEQ为[seq]的步骤中evaluation缺失")
    @Length(message = "实验步骤数据错误：实验步骤数据错误：SEQ为[seq]的步骤中remarks长度不符合<=200的要求", max = 200)
    private String evaluation;

    @ApiModelProperty(value = "赋分模型：200字以内")
    @NotBlank(message = "实验步骤数据错误：SEQ为[seq]的步骤中scoringModel缺失")
    @Length(message = "实验步骤数据错误：SEQ为[seq]的步骤中scoringModel长度不符合<=200的要求", max = 200)
    private String scoringModel;

    @ApiModelProperty(value = "备注：200字以内")
    @Length(message = "实验步骤数据错误：SEQ为[seq]的步骤中remarks长度不符合<=200的要求", max = 200)
    private String remarks;

    @ApiModelProperty(value = "自定义数据")
    private String ext_data;       
}
